#include "mainline_task_mgr.hpp"

#include <fstream>

#include "data/data_helper.hpp"
#include "data/mainline_task_mgr.hpp"
#include "utils/path_utils.hpp"
#include "json/json.hpp"


namespace {
    const std::string info_file = "mainline_task.json"_DP;

    void LoadTaskInfo(MainlineTaskInfo &info, const nlohmann::json &json) {
        info.task_title = json.value("title", "");
        info.redmine_act_id = json.value("redmine_act_id", -1);
        info.redmine_issue_id = json.value("redmine_issue_id", -1);
        info.tags = json.value("tags", std::vector<int32_t>{});
    }

    void SaveTaskInfo(const MainlineTaskInfo &info, nlohmann::json &json) {
        json = nlohmann::json::object();
        json["title"] = info.task_title;
        json["redmine_act_id"] = info.redmine_act_id;
        json["redmine_issue_id"] = info.redmine_issue_id;
        json["tags"] = info.tags;
    }
}

// MainlineTaskInfo& MainlineTaskManager::GetMainlineTask()
// {
//     return info_;
// }

// void MainlineTaskManager::Save(MainlineTaskInfo info)
// {
//     info_ = std::move(info);
//     SaveTaskInfo(info_);
// }

// MainlineTaskManager::MainlineTaskManager()
// {
//     LoadTaskInfo(info_);
// }


// MainlineTaskManager::~MainlineTaskManager()
// {
//     SaveTaskInfo(info_);
// }

IMPL_DATA_STORE(MainlineTaskInfo, "mainline_task.json", &LoadTaskInfo, &SaveTaskInfo);

bool MainlineTaskInfo::Valid() const {
    return true;
    // return !task_title.empty() && redmine_act_id > 0 && redmine_issue_id > 0;
}
